#ifndef SL_ZOOMABLE_HPP
#define SL_ZOOMABLE_HPP

// SFML Header
#include <SFML/System.hpp>

namespace sl
{
	class Zoomable
	{
	public:
		Zoomable(float zoomlevel = 1.f);
		Zoomable(const sf::Vector2f& zoomlevel);
		virtual ~Zoomable();

	protected:
		sf::Vector2f myZoomLevel;

	public:
		Zoomable* SetZoomLevel(float zoomlevel = 1.f);
		Zoomable* SetZoomLevel(const sf::Vector2f& zoomlevel);
		sf::Vector2f GetZoomLevel();
		Zoomable* AddZoomLevel(float zoomlevel = 0.f);
		Zoomable* AddZoomLevel(const sf::Vector2f& zoomlevel);
		Zoomable* ResetZoom();

	protected:
		virtual Zoomable* Zoom(float zoomlevel = 1.f);
		virtual Zoomable* Zoom(const sf::Vector2f& zoomlevel);
	};
}

#endif //SL_ZOOMABLE_HPP